#ifndef UV_H_
#define UV_H_

#include <vector>
#include "student.h"
using namespace std;


// exceptions:
// 1 - student already exists
// 2 - student not found

class Student_t;

class UV
{
public:
	virtual ~UV(){}
	static void destroy();
	static UV* createObj();

	virtual void attach(Student_t* student);
	virtual void detach(Student_t* student);
	virtual void notify(int n);

	virtual void addStudent(const unsigned int& id, const string& type);
	virtual void removeStudent(const unsigned int& id);

	virtual void raisePrice();
	virtual void cancelClass();

private:
	static UV* obj;
	vector<Student_t*> students;

	UV(){}
	UV(const UV&){}
	void operator=(UV&){}
};


#endif /* UV_H_ */
